home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume11 / reve / patch2c < prev    next >
Encoding:
Internet Message Format  |  1991-01-03  |  39.8 KB

  1. Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v11i099:  reve - an othello game, Patch2c
  5. Message-ID: <6739@tekred.CNA.TEK.COM>
  6. Date: 20 Dec 90 00:37:33 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 1135
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Rich Burridge <rburridge@sun.COM>
  12. Posting-number: Volume 11, Issue 99
  13. Archive-name: reve/Patch2c
  14. Patch-To: reve: Volume 11, Issue 52-58
  15. Environment: SunView, XView, X11R4, termcap
  16.  
  17.  
  18.  
  19. #! /bin/sh
  20. # This is a shell archive.  Remove anything before this line, then unpack
  21. # it by saving it into a file and typing "sh file".  To overwrite existing
  22. # files, type "sh file -c".  You can also feed this as standard input via
  23. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  24. # will see the following message at the end:
  25. #        "End of archive 3 (of 3)."
  26. # Contents:  patches02c
  27. # Wrapped by billr@saab on Wed Dec 19 16:32:51 1990
  28. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  29. if test -f 'patches02c' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'patches02c'\"
  31. else
  32. echo shar: Extracting \"'patches02c'\" \(37905 characters\)
  33. sed "s/^X//" >'patches02c' <<'END_OF_FILE'
  34. X------- reve.h -------
  35. X*** /tmp/da02145    Wed Nov 28 11:00:32 1990
  36. X--- reve.h    Fri Nov 23 23:16:36 1990
  37. X***************
  38. X*** 25,31 ****
  39. X  #include <stdio.h>
  40. X  #include <sys/types.h>
  41. X  
  42. X! #define  FCLOSE        (void) fclose      /* To make lint happy. */
  43. X  #define  FFLUSH        (void) fflush
  44. X  #define  FGETS         (void) fgets
  45. X  #define  FSEEK         (void) fseek
  46. X--- 25,32 ----
  47. X  #include <stdio.h>
  48. X  #include <sys/types.h>
  49. X  
  50. X! #define  ALARM         (void) alarm       /* To make lint happy. */
  51. X! #define  FCLOSE        (void) fclose
  52. X  #define  FFLUSH        (void) fflush
  53. X  #define  FGETS         (void) fgets
  54. X  #define  FSEEK         (void) fseek
  55. X***************
  56. X*** 64,70 ****
  57. X  #else
  58. X  #define  CELL_SIZE     (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
  59. X  #define  CY            ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
  60. X! #define  NOROWS        6        /* Number of rows of reve items. */
  61. X  #define  TOTAL_HEIGHT  CY + (8 * CELL_SIZE) + (2 * BBORDER)
  62. X  #define  TOTAL_WIDTH   ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
  63. X  #endif /*XVIEW*/
  64. X--- 65,71 ----
  65. X  #else
  66. X  #define  CELL_SIZE     (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
  67. X  #define  CY            ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
  68. X! #define  NOROWS        7        /* Number of rows of reve items. */
  69. X  #define  TOTAL_HEIGHT  CY + (8 * CELL_SIZE) + (2 * BBORDER)
  70. X  #define  TOTAL_WIDTH   ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
  71. X  #endif /*XVIEW*/
  72. X***************
  73. X*** 231,239 ****
  74. X  void do_move(),            do_selection(),       domove() ;
  75. X  void done(),               draw_button(),        draw_cycle() ;
  76. X  void draw_cycle_item(),    draw_image(),         draw_line() ;
  77. X! void draw_piece(),         draw_rect(),          draw_stencil() ;
  78. X! void draw_text(),          draw_textfield() ;
  79. X! void generate_graphics(),  get_filename() ;
  80. X  void get_options(),        get_xy(),             getparam() ;
  81. X  void handle_board_event(), handle_event(),       handle_item() ;
  82. X  void handle_key(),         init_canvas(),        init_edge_table() ;
  83. X--- 232,240 ----
  84. X  void do_move(),            do_selection(),       domove() ;
  85. X  void done(),               draw_button(),        draw_cycle() ;
  86. X  void draw_cycle_item(),    draw_image(),         draw_line() ;
  87. X! void draw_outline(),       draw_piece(),         draw_rect() ;
  88. X! void draw_square(),        draw_stencil(),       draw_text() ;
  89. X! void draw_textfield(),     generate_graphics(),  get_filename() ;
  90. X  void get_options(),        get_xy(),             getparam() ;
  91. X  void handle_board_event(), handle_event(),       handle_item() ;
  92. X  void handle_key(),         init_canvas(),        init_edge_table() ;
  93. X***************
  94. X*** 245,253 ****
  95. X  void message(),            nap_upto(),           new_game() ;
  96. X  void position_popup(),     process_event(),      quit() ;
  97. X  void remove_textfield(),   save_game(),          set_cursor() ;
  98. X! void set_cycle(),          set_display_types() ;
  99. X! void set_timer(),          set_score(),          set_turn() ;
  100. X! void show_all(),           show_all_moves(),     show_last() ;
  101. X  void show_suggestion(),    start_tool() ;
  102. X  void suggest(),            think(),              undo() ;
  103. X  void update_board_image(), usage(),              who_wins() ;
  104. X--- 246,255 ----
  105. X  void message(),            nap_upto(),           new_game() ;
  106. X  void position_popup(),     process_event(),      quit() ;
  107. X  void remove_textfield(),   save_game(),          set_cursor() ;
  108. X! void set_cycle(),          set_display_types(),  set_eval() ;
  109. X! void set_score(),          set_timer(),          set_turn() ;
  110. X! void show_all(),           show_all_moves(),     show_best() ;
  111. X! void show_last(),          show_number() ;
  112. X  void show_suggestion(),    start_tool() ;
  113. X  void suggest(),            think(),              undo() ;
  114. X  void update_board_image(), usage(),              who_wins() ;
  115. X
  116. X------- reve.man.text -------
  117. X*** /tmp/da02148    Wed Nov 28 11:00:33 1990
  118. X--- reve.man.text    Fri Nov 23 07:05:48 1990
  119. X***************
  120. X*** 9,18 ****
  121. X       reve - an othello game.
  122. X  
  123. X  SYNOPSIS
  124. X!      reve [ -b [ display ] ] [ -c ] [ -d difficulty ] [ -e  edge-
  125. X!      file  ] [ -g geometry ] [ -i ] [ -l gamefile ] [ -m ] [ -n ]
  126. X!      [ -r ] [ -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y  ]
  127. X!      [ -WP x y ]
  128. X  
  129. X  DESCRIPTION
  130. X       Reve is a version of the popular Othello game.  It  contains
  131. X--- 9,19 ----
  132. X       reve - an othello game.
  133. X  
  134. X  SYNOPSIS
  135. X!      reve [ -animate ] [ -b [ display ] ] [ -c ] [ -d  difficulty
  136. X!      ]  [  -e edgefile ] [ -g geometry ] [ -i ] [ -last ] [ -load
  137. X!      gamefile ] [ -m ] [ -notes ] [ -number ] [ -quick ] [ -r ] [
  138. X!      -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y ] [ -WP x y
  139. X!      ]
  140. X  
  141. X  DESCRIPTION
  142. X       Reve is a version of the popular Othello game.  It  contains
  143. X***************
  144. X*** 20,47 ****
  145. X       being able to function on normal display terminals  using  a
  146. X       termcap interface.
  147. X  
  148. X!      Reve is played on an 8 x 8 board, with pieces  which  should
  149. X       be  considered  to  be  black  on  one side and white on the
  150. X!      other. A legal move consists of placing a piece of one's own
  151. X       color  on  the  board  so  as to "sandwich" one or more rows
  152. X!      (orthogonal or diagonal) of pieces  of  the  opposite  color
  153. X!      between  the piece just placed and another piece of the same
  154. X!      color. All pieces so sandwiched are flipped over  to  reveal
  155. X       the color of the other side (your own color).
  156. X  
  157. X!      The object of the game, is to  have  more  pieces  than  the
  158. X       opponent  at the end of the game (ie. when the board is full
  159. X       or neither side has a legal move).  If  you  have  no  legal
  160. X       move, you simply miss a turn.  Black goes first.
  161. X  
  162. X!      With reve, to place one of your own pieces simply click with
  163. X!      the  mouse  over  the square in which you want your piece to
  164. X       go. Note that it is also possible to supply a number  and  a
  165. X!      letter pair, to indicate where you would like your new piece
  166. X!      to go. This is the only method to place pieces with the dumb
  167. X       tty  interface.  The square containing the last move will be
  168. X       shown with a black outline. This is updated  with  each  new
  169. X!      move.
  170. X  
  171. X       There are various buttons and cyclic  selections  available.
  172. X       Their  meanings are given below, plus an indication of their
  173. X--- 21,50 ----
  174. X       being able to function on normal display terminals  using  a
  175. X       termcap interface.
  176. X  
  177. X!      Reve is played on an 8 x 8 board, with stones  which  should
  178. X       be  considered  to  be  black  on  one side and white on the
  179. X!      other. A legal move consists of placing a stone of one's own
  180. X       color  on  the  board  so  as to "sandwich" one or more rows
  181. X!      (orthogonal or diagonal) of stones  of  the  opposite  color
  182. X!      between  the stone just placed and another stone of the same
  183. X!      color. All stones so sandwiched are flipped over  to  reveal
  184. X       the color of the other side (your own color).
  185. X  
  186. X!      The object of the game, is to  have  more  stones  than  the
  187. X       opponent  at the end of the game (ie. when the board is full
  188. X       or neither side has a legal move).  If  you  have  no  legal
  189. X       move, you simply miss a turn.  Black goes first.
  190. X  
  191. X!      With reve, to place one of your own stones simply click with
  192. X!      the  mouse  over  the square in which you want your stone to
  193. X       go. Note that it is also possible to supply a number  and  a
  194. X!      letter pair, to indicate where you would like your new stone
  195. X!      to go. This is the only method to place stones with the dumb
  196. X       tty  interface.  The square containing the last move will be
  197. X       shown with a black outline. This is updated  with  each  new
  198. X!      move.  If  you hold the mouse button down as you move around
  199. X!      the board,  the  square  you  are  currently  over  will  be
  200. X!      highlighted.
  201. X  
  202. X       There are various buttons and cyclic  selections  available.
  203. X       Their  meanings are given below, plus an indication of their
  204. X***************
  205. X*** 54,65 ****
  206. X  
  207. X       By default, a human will play black, and the  computer  will
  208. X       play  white.  If  you  want a human vs human startup or some
  209. X-      other combination, then you should use the appropriate  com-
  210. X-      mand line options (see below).
  211. X  
  212. X  
  213. X  
  214. X- 
  215. X  Sun Release 4.1   Last change: 18 October 1990                  1
  216. X  
  217. X  
  218. X--- 57,65 ----
  219. X***************
  220. X*** 71,76 ****
  221. X--- 71,79 ----
  222. X  
  223. X  
  224. X  
  225. X+      other combination, then you should use the appropriate  com-
  226. X+      mand line options (see below).
  227. X+ 
  228. X  REVE BUTTONS
  229. X       With the graphics versions, there are eight buttons that are
  230. X       normally  displayed  at  the top of the Reve window. Each of
  231. X***************
  232. X*** 90,97 ****
  233. X                         unsuccessful, it will stop on the  invalid
  234. X                         line,  and  display  an  error message. As
  235. X                         each line is successfully  read  from  the
  236. X!                        game  file,  the piece is displayed on the
  237. X!                        board, and the appropriate pieces flipped.
  238. X  
  239. X       moves? [ A ]      Show all the valid moves for  the  current
  240. X                         board.  This  is useful for beginners, and
  241. X--- 93,100 ----
  242. X                         unsuccessful, it will stop on the  invalid
  243. X                         line,  and  display  an  error message. As
  244. X                         each line is successfully  read  from  the
  245. X!                        game  file,  the stone is displayed on the
  246. X!                        board, and the appropriate stones flipped.
  247. X  
  248. X       moves? [ A ]      Show all the valid moves for  the  current
  249. X                         board.  This  is useful for beginners, and
  250. X***************
  251. X*** 120,128 ****
  252. X  REVE CYCLIC SELECTIONS
  253. X       With the graphical versions, just below  the  eight  buttons
  254. X       are four cycle items.  These can either be selected with the
  255. X-      left mouse button, to increment  or  decrement  the  current
  256. X-      selection  (depending  upon which half on the item you click
  257. X-      over), or a selection can be made from a popup menu when you
  258. X  
  259. X  
  260. X  
  261. X--- 123,128 ----
  262. X***************
  263. X*** 137,142 ****
  264. X--- 137,145 ----
  265. X  
  266. X  
  267. X  
  268. X+      left mouse button, to increment  or  decrement  the  current
  269. X+      selection  (depending  upon which half on the item you click
  270. X+      over), or a selection can be made from a popup menu when you
  271. X       click  with  the  right mouse button (SunView and XView ver-
  272. X       sions only).  Each cycle value  has  a  keyboard  equivalent
  273. X       which  is given in brackets below.  This must be followed by
  274. X***************
  275. X*** 184,197 ****
  276. X                         tion of whether it was a good or bad move.
  277. X  
  278. X  OPTIONS
  279. X!      -b [ display ]
  280. X!           Black will be played by a human. With the  X11  variant
  281. X!           of  reve  it  is  possible  to give an optional display
  282. X!           value.
  283. X  
  284. X  
  285. X  
  286. X- 
  287. X  Sun Release 4.1   Last change: 18 October 1990                  3
  288. X  
  289. X  
  290. X--- 187,197 ----
  291. X                         tion of whether it was a good or bad move.
  292. X  
  293. X  OPTIONS
  294. X!      -animate
  295. X!           Show animation. The computer's stone will glide in from
  296. X  
  297. X  
  298. X  
  299. X  Sun Release 4.1   Last change: 18 October 1990                  3
  300. X  
  301. X  
  302. X***************
  303. X*** 203,210 ****
  304. X  
  305. X  
  306. X  
  307. X       -c   The computer will play. Presence or absence of  -b  and
  308. X!           -w options determine which piece the computer plays.
  309. X  
  310. X       -d difficulty
  311. X            The level of difficulty for  computer  moves.  See  the
  312. X--- 203,218 ----
  313. X  
  314. X  
  315. X  
  316. X+           the top left corner of the board, and when you hold the
  317. X+           left mouse button down, your stone is dragged around.
  318. X+ 
  319. X+      -b [ display ]
  320. X+           Black will be played by a human. With the  X11  variant
  321. X+           of  reve  it  is  possible  to give an optional display
  322. X+           value.
  323. X+ 
  324. X       -c   The computer will play. Presence or absence of  -b  and
  325. X!           -w options determine which stone the computer plays.
  326. X  
  327. X       -d difficulty
  328. X            The level of difficulty for  computer  moves.  See  the
  329. X***************
  330. X*** 227,240 ****
  331. X            inverse mode. This option is currently only implemented
  332. X            for the SunView version.
  333. X  
  334. X!      -l gamefile
  335. X            Load a game file. The format of this game file is given
  336. X!           below. The board will be setup with these pieces.
  337. X  
  338. X       -m   Always display in monochrome, even on a color screen.
  339. X  
  340. X!      -n   Display computer notes.
  341. X  
  342. X       -r   Save a log of computer move  information  to  the  file
  343. X            reve.res  as  the  game progresses. This information is
  344. X            probably only useful to people trying  to  improve  the
  345. X--- 235,274 ----
  346. X            inverse mode. This option is currently only implemented
  347. X            for the SunView version.
  348. X  
  349. X!      -last
  350. X!           Show where the last stone was placed, by outlining  the
  351. X!           square.
  352. X! 
  353. X!      -load gamefile
  354. X            Load a game file. The format of this game file is given
  355. X!           below. The board will be setup with these stones.
  356. X  
  357. X       -m   Always display in monochrome, even on a color screen.
  358. X  
  359. X!      -notes
  360. X!           Display computer notes.
  361. X  
  362. X+      -number
  363. X+           Show the move number on the last stone placed.
  364. X+ 
  365. X+      -quick
  366. X+           Play a quick game. Don't flash the stones as  they  are
  367. X+           being turned.
  368. X+ 
  369. X+ 
  370. X+ 
  371. X+ 
  372. X+ Sun Release 4.1   Last change: 18 October 1990                  4
  373. X+ 
  374. X+ 
  375. X+ 
  376. X+ 
  377. X+ 
  378. X+ 
  379. X+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
  380. X+ 
  381. X+ 
  382. X+ 
  383. X       -r   Save a log of computer move  information  to  the  file
  384. X            reve.res  as  the  game progresses. This information is
  385. X            probably only useful to people trying  to  improve  the
  386. X***************
  387. X*** 255,274 ****
  388. X            and  XView version of reve will automatically uses this
  389. X            flag, but the X11 version will also.
  390. X  
  391. X- 
  392. X- 
  393. X- 
  394. X- Sun Release 4.1   Last change: 18 October 1990                  4
  395. X- 
  396. X- 
  397. X- 
  398. X- 
  399. X- 
  400. X- 
  401. X- REVE(6)                  GAMES AND DEMOS                  REVE(6)
  402. X- 
  403. X- 
  404. X- 
  405. X       -Wp x y
  406. X            Start the open window position at x y
  407. X  
  408. X--- 289,294 ----
  409. X***************
  410. X*** 291,297 ****
  411. X       and give the column and row. The column  letter  can  be  in
  412. X       either lower or upper case.
  413. X  
  414. X!      It is possible for one piece to have two or more  consequen-
  415. X       tive  moves,  hence  the need for the above scheme.  Reve is
  416. X       flexible about white space (except between the '<'  and  '>'
  417. X       characters).  The remarks field is ignored. The program will
  418. X--- 311,317 ----
  419. X       and give the column and row. The column  letter  can  be  in
  420. X       either lower or upper case.
  421. X  
  422. X!      It is possible for one player to have two or more consequen-
  423. X       tive  moves,  hence  the need for the above scheme.  Reve is
  424. X       flexible about white space (except between the '<'  and  '>'
  425. X       characters).  The remarks field is ignored. The program will
  426. X***************
  427. X*** 301,306 ****
  428. X--- 321,340 ----
  429. X  
  430. X  FILES
  431. X       /usr/local/lib/reve.edgetable
  432. X+ 
  433. X+ 
  434. X+ 
  435. X+ Sun Release 4.1   Last change: 18 October 1990                  5
  436. X+ 
  437. X+ 
  438. X+ 
  439. X+ 
  440. X+ 
  441. X+ 
  442. X+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
  443. X+ 
  444. X+ 
  445. X+ 
  446. X            edge stability table for  all  possible  edge  combina-
  447. X            tions.
  448. X  
  449. X***************
  450. X*** 324,330 ****
  451. X  
  452. X  
  453. X  
  454. X! Sun Release 4.1   Last change: 18 October 1990                  5
  455. X  
  456. X  
  457. X  
  458. X--- 358,396 ----
  459. X  
  460. X  
  461. X  
  462. X! 
  463. X! 
  464. X! 
  465. X! 
  466. X! 
  467. X! 
  468. X! 
  469. X! 
  470. X! 
  471. X! 
  472. X! 
  473. X! 
  474. X! 
  475. X! 
  476. X! 
  477. X! 
  478. X! 
  479. X! 
  480. X! 
  481. X! 
  482. X! 
  483. X! 
  484. X! 
  485. X! 
  486. X! 
  487. X! 
  488. X! 
  489. X! 
  490. X! 
  491. X! 
  492. X! 
  493. X! 
  494. X! Sun Release 4.1   Last change: 18 October 1990                  6
  495. X  
  496. X  
  497. X  
  498. X
  499. X------- sunview.c -------
  500. X*** /tmp/da02151    Wed Nov 28 11:00:34 1990
  501. X--- sunview.c    Mon Nov 19 18:26:46 1990
  502. X***************
  503. X*** 178,183 ****
  504. X--- 178,185 ----
  505. X    int rop ;
  506. X  
  507. X    rop = opvals[(int) op] ;
  508. X+   if (!iscolor[(int) cur_dpyno] && color == C_WHITE)
  509. X+     rop = opvals[(int) RCLR] ;
  510. X    PW_VECTOR(cpw, x1, y1, x2, y2, rop | PIX_COLOR(color), 1) ;
  511. X  }
  512. X  
  513. X***************
  514. X*** 272,278 ****
  515. X    PW_PUTCOLORMAP(cpw, 0, OTH_COLORSIZE, red, green, blue) ;
  516. X    if (inv_video) PW_REVERSEVIDEO(cpw, 0, OTH_COLORSIZE) ;
  517. X  
  518. X!   if (iscolor)
  519. X      {
  520. X        frame_pw = (Pixwin *) window_get(frame, WIN_PIXWIN) ;
  521. X        PW_SETCMSNAME(frame_pw, colorname) ;
  522. X--- 274,280 ----
  523. X    PW_PUTCOLORMAP(cpw, 0, OTH_COLORSIZE, red, green, blue) ;
  524. X    if (inv_video) PW_REVERSEVIDEO(cpw, 0, OTH_COLORSIZE) ;
  525. X  
  526. X!   if (iscolor[(int) cur_dpyno])
  527. X      {
  528. X        frame_pw = (Pixwin *) window_get(frame, WIN_PIXWIN) ;
  529. X        PW_SETCMSNAME(frame_pw, colorname) ;
  530. X***************
  531. X*** 408,414 ****
  532. X  start_tool(dtype)      /* Display window and start the notifier. */
  533. X  enum disp_type dtype ;
  534. X  {
  535. X!   if (iscolor)
  536. X      {
  537. X        reve_icon = (Icon) window_get(frame, FRAME_ICON) ;
  538. X        ICON_SET(reve_icon, ICON_IMAGE, &cicon_pr, 0) ;
  539. X--- 410,416 ----
  540. X  start_tool(dtype)      /* Display window and start the notifier. */
  541. X  enum disp_type dtype ;
  542. X  {
  543. X!   if (iscolor[(int) cur_dpyno])
  544. X      {
  545. X        reve_icon = (Icon) window_get(frame, FRAME_ICON) ;
  546. X        ICON_SET(reve_icon, ICON_IMAGE, &cicon_pr, 0) ;
  547. X
  548. X------- tty.c -------
  549. X*** /tmp/da02154    Wed Nov 28 11:00:35 1990
  550. X--- tty.c    Thu Nov 22 11:17:28 1990
  551. X***************
  552. X*** 349,369 ****
  553. X                    othervals[(int) PANEL_MES].row, str, TRUE) ;
  554. X        return ;
  555. X      }
  556. X!   else if (x == 237 && y == 195)       /* Note message. */
  557. X      {
  558. X        draw_string(othervals[(int) EVAL_MES].column,
  559. X                    othervals[(int) EVAL_MES].row, str, TRUE) ;
  560. X        return ;
  561. X      }
  562. X!   else if (x == 15 && y == 237)        /* Score message. */
  563. X      {
  564. X!       if (sscanf(str, "Black: %d, White: %d", &black, &white) == 2)
  565. X          SPRINTF(str, "Black (O): %d, White (X): %d", black, white) ;
  566. X        draw_string(othervals[(int) SCORE_MES].column,
  567. X                    othervals[(int) SCORE_MES].row, str, TRUE) ;
  568. X        return ;
  569. X      }
  570. X!   else if (x == 237 && y == 237)       /* Turn message. */
  571. X      {
  572. X        draw_string(othervals[(int) TURN_MES].column,
  573. X                    othervals[(int) TURN_MES].row, str, TRUE) ;
  574. X--- 349,369 ----
  575. X                    othervals[(int) PANEL_MES].row, str, TRUE) ;
  576. X        return ;
  577. X      }
  578. X!   else if (x == 15 && y == 237)       /* Note message. */
  579. X      {
  580. X        draw_string(othervals[(int) EVAL_MES].column,
  581. X                    othervals[(int) EVAL_MES].row, str, TRUE) ;
  582. X        return ;
  583. X      }
  584. X!   else if (x == 15 && y == 279)        /* Score message. */
  585. X      {
  586. X!       if (sscanf(str, "Stones: Black: %d White: %d", &black, &white) == 2)
  587. X          SPRINTF(str, "Black (O): %d, White (X): %d", black, white) ;
  588. X        draw_string(othervals[(int) SCORE_MES].column,
  589. X                    othervals[(int) SCORE_MES].row, str, TRUE) ;
  590. X        return ;
  591. X      }
  592. X!   else if (x == 237 && y == 279)       /* Turn message. */
  593. X      {
  594. X        draw_string(othervals[(int) TURN_MES].column,
  595. X                    othervals[(int) TURN_MES].row, str, TRUE) ;
  596. X***************
  597. X*** 377,382 ****
  598. X--- 377,383 ----
  599. X        if (ttyvals[i].column != -1)
  600. X          {
  601. X                 if (EQUAL(str, "load"))     STRCPY(str, "Load") ;
  602. X+           else if (EQUAL(str, "moves?"))   STRCPY(str, "Moves?") ;
  603. X            else if (EQUAL(str, "save"))     STRCPY(str, "Save") ;
  604. X            else if (EQUAL(str, "show all")) STRCPY(str, "show All") ;
  605. X            draw_string(ttyvals[i].column, ttyvals[i].row, str, FALSE) ;
  606. X
  607. X------- x11.c -------
  608. X*** /tmp/da02157    Wed Nov 28 11:00:36 1990
  609. X--- x11.c    Fri Nov 23 07:01:40 1990
  610. X***************
  611. X*** 29,44 ****
  612. X  #include "images.h"
  613. X  #include <sys/time.h>
  614. X  
  615. X- #ifdef SYSV
  616. X- #include <string.h>
  617. X- #else
  618. X- #include <strings.h>
  619. X- #endif /*SYSV*/
  620. X- 
  621. X  #include <X11/Xlib.h>
  622. X  #include <X11/Xutil.h>
  623. X  #include <X11/Xatom.h>
  624. X  #include <X11/cursorfont.h>
  625. X  
  626. X  #define  BOLDFONT    "lucidasanstypewriter-bold-12"
  627. X  #define  DEFFONT     "fixed"
  628. X--- 29,40 ----
  629. X  #include "images.h"
  630. X  #include <sys/time.h>
  631. X  
  632. X  #include <X11/Xlib.h>
  633. X  #include <X11/Xutil.h>
  634. X  #include <X11/Xatom.h>
  635. X+ #include <X11/Xos.h>
  636. X  #include <X11/cursorfont.h>
  637. X+ #include <X11/keysym.h>
  638. X  
  639. X  #define  BOLDFONT    "lucidasanstypewriter-bold-12"
  640. X  #define  DEFFONT     "fixed"
  641. X***************
  642. X*** 608,613 ****
  643. X--- 604,610 ----
  644. X  {
  645. X    XClientMessageEvent *ev ;
  646. X    XKeyPressedEvent *key_event ;
  647. X+   KeySym keysym ;
  648. X    char chs[2] ;
  649. X    int d ;
  650. X  
  651. X***************
  652. X*** 628,637 ****
  653. X                                curx = key_event->x ;
  654. X                                cury = key_event->y ;
  655. X                                (void) XLookupString(key_event, chs, 1,
  656. X!                                                    (KeySym *)  NULL,
  657. X                                                     (XComposeStatus *) NULL) ;
  658. X!                               cur_ch = chs[0] ;
  659. X!                               nextc = KEYBOARD ;
  660. X                                break ;
  661. X        case EnterNotify      : nextc = ENTER_WINDOW ;
  662. X                                break ;
  663. X--- 625,639 ----
  664. X                                curx = key_event->x ;
  665. X                                cury = key_event->y ;
  666. X                                (void) XLookupString(key_event, chs, 1,
  667. X!                                                    &keysym,
  668. X                                                     (XComposeStatus *) NULL) ;
  669. X!                               if (keysym == XK_Shift_L ||
  670. X!                                   keysym == XK_Shift_R) nextc = IGNORE_EVENT ;
  671. X!                               else
  672. X!                                 {
  673. X!                                   cur_ch = chs[0] ;
  674. X!                                   nextc = KEYBOARD ;
  675. X!                                 }
  676. X                                break ;
  677. X        case EnterNotify      : nextc = ENTER_WINDOW ;
  678. X                                break ;
  679. X
  680. X------- FILES -------
  681. X*** /tmp/da02160    Wed Nov 28 11:00:37 1990
  682. X--- FILES    Wed Nov 28 10:57:53 1990
  683. X***************
  684. X*** 26,33 ****
  685. X  CHANGES                     - change history. Updated with each new patch.
  686. X  README                      - describes what reve is, and how to get started.
  687. X  TODO                        - bugs and suggested enhancements. Volunteers?
  688. X! reve.6                      - the reve manual page (troff/nroff -man format).
  689. X! reve.man                    - plain text version of the reve manual pages.
  690. X  MANIFEST                    - tells you what archive part each file was in.
  691. X  FILES                       - what you're reading now.
  692. X  reve.edge1                  - first half of the Reve edge stability table.
  693. X--- 26,33 ----
  694. X  CHANGES                     - change history. Updated with each new patch.
  695. X  README                      - describes what reve is, and how to get started.
  696. X  TODO                        - bugs and suggested enhancements. Volunteers?
  697. X! reve.man                    - the reve manual page (troff/nroff -man format).
  698. X! reve.man.text               - plain text version of the reve manual pages.
  699. X  MANIFEST                    - tells you what archive part each file was in.
  700. X  FILES                       - what you're reading now.
  701. X  reve.edge1                  - first half of the Reve edge stability table.
  702. X***************
  703. X*** 44,57 ****
  704. X  --------------------------------------------------------------------------
  705. X  images/black.icon           - black reve piece.
  706. X  images/reve.icon            - reve icon (monochrome screens and XView).
  707. X! images/reve.color.icon      - reve icon (color screens).
  708. X  images/white.icon           - white reve piece.
  709. X! images/button.invert.icon   - button panel item in inverted mode.
  710. X! images/button.normal.icon   - button panel item in normal mode.
  711. X! images/button.stencil.icon  - stencil for normal/inverted button panel items.
  712. X! images/cycle.glyph.icon     - cycle panel item in normal mode.
  713. X! images/cycle.linvert.icon   - cycle panel item with left side inverted.
  714. X! images/cycle.rinvert.icon   - cycle panel item with right side inverted.
  715. X! images/cycle.stencil.icon   - stencil for normal/inverted cycle panel items.
  716. X  images/hglass.cursor        - hour glass cursor for computer move.
  717. X  images/nocur.cursor         - no cursor when piece is being dragged.
  718. X--- 44,57 ----
  719. X  --------------------------------------------------------------------------
  720. X  images/black.icon           - black reve piece.
  721. X  images/reve.icon            - reve icon (monochrome screens and XView).
  722. X! images/Creve.icon           - reve icon (color screens).
  723. X  images/white.icon           - white reve piece.
  724. X! images/Ibutton.icon         - button panel item in inverted mode.
  725. X! images/Nbutton.icon         - button panel item in normal mode.
  726. X! images/Sbutton.icon         - stencil for normal/inverted button panel items.
  727. X! images/Ncycle.icon          - cycle panel item in normal mode.
  728. X! images/Lcycle.icon          - cycle panel item with left side inverted.
  729. X! images/Rcycle.icon          - cycle panel item with right side inverted.
  730. X! images/Scycle.icon          - stencil for normal/inverted cycle panel items.
  731. X  images/hglass.cursor        - hour glass cursor for computer move.
  732. X  images/nocur.cursor         - no cursor when piece is being dragged.
  733. X
  734. X------- MANIFEST -------
  735. X*** /tmp/da02163    Wed Nov 28 11:00:38 1990
  736. X--- MANIFEST    Wed Nov 28 10:55:07 1990
  737. X***************
  738. X*** 23,32 ****
  739. X  CHANGES                                |    3
  740. X  README                                 |    3
  741. X  TODO                                   |    3
  742. X- reve.6                                 |    3
  743. X  reve.man                               |    3
  744. X  MANIFEST                               |    3
  745. X  FILES                                  |    3
  746. X  Makefile.dist                          |    3
  747. X  tty.c                                  |    4
  748. X  x11.c                                  |    4
  749. X--- 23,32 ----
  750. X  CHANGES                                |    3
  751. X  README                                 |    3
  752. X  TODO                                   |    3
  753. X  reve.man                               |    3
  754. X  MANIFEST                               |    3
  755. X  FILES                                  |    3
  756. X+ reve.man.text                          |    3
  757. X  Makefile.dist                          |    3
  758. X  tty.c                                  |    4
  759. X  x11.c                                  |    4
  760. X***************
  761. X*** 35,49 ****
  762. X  Imakefile                              |    5
  763. X  images/black.icon                      |    5
  764. X  images/reve.icon                       |    5
  765. X! images/reve.color.icon                 |    5
  766. X  images/white.icon                      |    5
  767. X! images/button.invert.icon              |    5
  768. X! images/button.normal.icon              |    5
  769. X! images/button.stencil.icon             |    5
  770. X! images/cycle.glyph.icon                |    5
  771. X! images/cycle.linvert.icon              |    5
  772. X! images/cycle.rinvert.icon              |    5
  773. X! images/cycle.stencil.icon              |    5
  774. X  images/hglass.cursor                   |    5
  775. X  images/nocur.cursor                    |    5
  776. X  reve.edge1                             |    6
  777. X--- 35,49 ----
  778. X  Imakefile                              |    5
  779. X  images/black.icon                      |    5
  780. X  images/reve.icon                       |    5
  781. X! images/Creve.icon                      |    5
  782. X  images/white.icon                      |    5
  783. X! images/Ibutton.icon                    |    5
  784. X! images/Nbutton.icon                    |    5
  785. X! images/Sbutton.icon                    |    5
  786. X! images/Ncycle.icon                     |    5
  787. X! images/Lcycle.icon                     |    5
  788. X! images/Rcycle.icon                     |    5
  789. X! images/Scycle.icon                     |    5
  790. X  images/hglass.cursor                   |    5
  791. X  images/nocur.cursor                    |    5
  792. X  reve.edge1                             |    6
  793. X
  794. X------- reve.man -------
  795. X*** /tmp/da02166    Wed Nov 28 11:00:38 1990
  796. X--- reve.man    Fri Nov 23 08:47:02 1990
  797. X***************
  798. X*** 5,11 ****
  799. X  .SH SYNOPSIS
  800. X  .B "reve
  801. X  [
  802. X! .B \-b
  803. X  .I [ display ]
  804. X  ] [
  805. X  .B \-c
  806. X--- 5,13 ----
  807. X  .SH SYNOPSIS
  808. X  .B "reve
  809. X  [
  810. X! .B \-animate
  811. X! ] [
  812. X! .B \-black
  813. X  .I [ display ]
  814. X  ] [
  815. X  .B \-c
  816. X***************
  817. X*** 21,38 ****
  818. X  ] [
  819. X  .B \-i
  820. X  ] [
  821. X! .B \-l
  822. X  .I gamefile
  823. X  ] [
  824. X  .B \-m
  825. X  ] [
  826. X! .B \-n
  827. X  ] [
  828. X  .B \-r
  829. X  ] [
  830. X  .B \-v
  831. X  ] [
  832. X! .B \-w
  833. X  .I [ display ]
  834. X  ] [
  835. X  .B \-?
  836. X--- 23,46 ----
  837. X  ] [
  838. X  .B \-i
  839. X  ] [
  840. X! .B \-last
  841. X! ] [
  842. X! .B \-load
  843. X  .I gamefile
  844. X  ] [
  845. X  .B \-m
  846. X  ] [
  847. X! .B \-notes
  848. X  ] [
  849. X+ .B \-number
  850. X+ ] [
  851. X+ .B \-quick
  852. X+ ] [
  853. X  .B \-r
  854. X  ] [
  855. X  .B \-v
  856. X  ] [
  857. X! .B \-white
  858. X  .I [ display ]
  859. X  ] [
  860. X  .B \-?
  861. X***************
  862. X*** 51,64 ****
  863. X  for SunView, X11 and XView, as well as being able to function on
  864. X  normal display terminals using a termcap interface.
  865. X  .LP
  866. X! Reve is played on an 8 x 8 board, with pieces which should be considered to
  867. X  be black on one side and white on the other. A legal move consists of placing
  868. X! a piece of one's own color on the board so as to "sandwich" one or more rows
  869. X! (orthogonal or diagonal) of pieces of the opposite color between the piece
  870. X! just placed and another piece of the same color. All pieces so sandwiched are
  871. X  flipped over to reveal the color of the other side (your own color).
  872. X  .LP
  873. X! The object of the game, is to have more pieces than the opponent at
  874. X  the end of the game (ie. when the board is full or neither side has
  875. X  a legal move). If you have no legal move, you simply miss a turn.
  876. X  Black goes first.
  877. X--- 59,72 ----
  878. X  for SunView, X11 and XView, as well as being able to function on
  879. X  normal display terminals using a termcap interface.
  880. X  .LP
  881. X! Reve is played on an 8 x 8 board, with stones which should be considered to
  882. X  be black on one side and white on the other. A legal move consists of placing
  883. X! a stone of one's own color on the board so as to "sandwich" one or more rows
  884. X! (orthogonal or diagonal) of stones of the opposite color between the stone
  885. X! just placed and another stone of the same color. All stones so sandwiched are
  886. X  flipped over to reveal the color of the other side (your own color).
  887. X  .LP
  888. X! The object of the game, is to have more stones than the opponent at
  889. X  the end of the game (ie. when the board is full or neither side has
  890. X  a legal move). If you have no legal move, you simply miss a turn.
  891. X  Black goes first.
  892. X***************
  893. X*** 65,76 ****
  894. X  .LP
  895. X  With
  896. X  .I reve,
  897. X! to place one of your own pieces simply click with the mouse over the
  898. X! square in which you want your piece to go. Note that it is also possible
  899. X  to supply a number and a letter pair, to indicate where you would like your
  900. X! new piece to go. This is the only method to place pieces with the dumb tty
  901. X  interface. The square containing the last move will be shown with a black
  902. X! outline. This is updated with each new move.
  903. X  .LP
  904. X  There are various buttons and cyclic selections available. Their meanings
  905. X  are given below, plus an indication of their keyboard equivalents. With the
  906. X--- 73,86 ----
  907. X  .LP
  908. X  With
  909. X  .I reve,
  910. X! to place one of your own stones simply click with the mouse over the
  911. X! square in which you want your stone to go. Note that it is also possible
  912. X  to supply a number and a letter pair, to indicate where you would like your
  913. X! new stone to go. This is the only method to place stones with the dumb tty
  914. X  interface. The square containing the last move will be shown with a black
  915. X! outline. This is updated with each new move. If you hold the mouse button
  916. X! down as you move around the board, the square you are currently over will
  917. X! be highlighted.
  918. X  .LP
  919. X  There are various buttons and cyclic selections available. Their meanings
  920. X  are given below, plus an indication of their keyboard equivalents. With the
  921. X***************
  922. X*** 96,103 ****
  923. X  load operation. When you press the Return key, filename entry is complete,
  924. X  and the program will try to load this file. If it's unsuccessful, it will
  925. X  stop on the invalid line, and display an error message. As each line is
  926. X! successfully read from the game file, the piece is displayed on the board,
  927. X! and the appropriate pieces flipped.
  928. X  .IP "\fBmoves? [ A ]\fP" 18
  929. X  Show all the valid moves for the current board. This is useful for beginners,
  930. X  and for teaching purposes.
  931. X--- 106,113 ----
  932. X  load operation. When you press the Return key, filename entry is complete,
  933. X  and the program will try to load this file. If it's unsuccessful, it will
  934. X  stop on the invalid line, and display an error message. As each line is
  935. X! successfully read from the game file, the stone is displayed on the board,
  936. X! and the appropriate stones flipped.
  937. X  .IP "\fBmoves? [ A ]\fP" 18
  938. X  Show all the valid moves for the current board. This is useful for beginners,
  939. X  and for teaching purposes.
  940. X***************
  941. X*** 171,177 ****
  942. X  an indication of whether it was a good or bad move.
  943. X  .SH OPTIONS
  944. X  .TP
  945. X! .BI \-b " [ display ]"
  946. X  Black will be played by a human. With the X11 variant of
  947. X  .I reve
  948. X  it is possible to give an optional display value.
  949. X--- 181,192 ----
  950. X  an indication of whether it was a good or bad move.
  951. X  .SH OPTIONS
  952. X  .TP
  953. X! .B \-animate
  954. X! Show animation. The computer's stone will glide in from the top left
  955. X! corner of the board, and when you hold the left mouse button down, your
  956. X! stone is dragged around.
  957. X! .TP
  958. X! .BI \-black " [ display ]"
  959. X  Black will be played by a human. With the X11 variant of
  960. X  .I reve
  961. X  it is possible to give an optional display value.
  962. X***************
  963. X*** 178,184 ****
  964. X  .TP
  965. X  .B \-c
  966. X  The computer will play. Presence or absence of \fB\-b\fP and \fB\-w\fP
  967. X! options determine which piece the computer plays.
  968. X  .TP
  969. X  .BI \-d " difficulty"
  970. X  The level of difficulty for computer moves. See the \fBDifficulty:\fP
  971. X--- 193,199 ----
  972. X  .TP
  973. X  .B \-c
  974. X  The computer will play. Presence or absence of \fB\-b\fP and \fB\-w\fP
  975. X! options determine which stone the computer plays.
  976. X  .TP
  977. X  .BI \-d " difficulty"
  978. X  The level of difficulty for computer moves. See the \fBDifficulty:\fP
  979. X***************
  980. X*** 203,218 ****
  981. X  started their graphics environment in inverse mode. This option is
  982. X  currently only implemented for the SunView version.
  983. X  .TP
  984. X! .BI \-l " gamefile"
  985. X  Load a game file. The format of this game file is given below. The board
  986. X! will be setup with these pieces.
  987. X  .TP
  988. X  .B \-m
  989. X  Always display in monochrome, even on a color screen.
  990. X  .TP
  991. X! .B \-n
  992. X  Display computer notes.
  993. X  .TP
  994. X  .B \-r
  995. X  Save a log of computer move information to the file
  996. X  .I reve.res
  997. X--- 218,242 ----
  998. X  started their graphics environment in inverse mode. This option is
  999. X  currently only implemented for the SunView version.
  1000. X  .TP
  1001. X! .B \-last
  1002. X! Show where the last stone was placed, by outlining the square.
  1003. X! .TP
  1004. X! .BI \-load " gamefile"
  1005. X  Load a game file. The format of this game file is given below. The board
  1006. X! will be setup with these stones.
  1007. X  .TP
  1008. X  .B \-m
  1009. X  Always display in monochrome, even on a color screen.
  1010. X  .TP
  1011. X! .B \-notes
  1012. X  Display computer notes.
  1013. X  .TP
  1014. X+ .B \-number
  1015. X+ Show the move number on the last stone placed.
  1016. X+ .TP
  1017. X+ .B \-quick
  1018. X+ Play a quick game. Don't flash the stones as they are being turned.
  1019. X+ .TP
  1020. X  .B \-r
  1021. X  Save a log of computer move information to the file
  1022. X  .I reve.res
  1023. X***************
  1024. X*** 229,235 ****
  1025. X  .I reve
  1026. X  program.
  1027. X  .TP
  1028. X! .BI \-w " [ display ]"
  1029. X  White will be played by a human. With the X11 variant of
  1030. X  .I reve
  1031. X  it is possible to give an optional display value.
  1032. X--- 253,259 ----
  1033. X  .I reve
  1034. X  program.
  1035. X  .TP
  1036. X! .BI \-white " [ display ]"
  1037. X  White will be played by a human. With the X11 variant of
  1038. X  .I reve
  1039. X  it is possible to give an optional display value.
  1040. X***************
  1041. X*** 265,271 ****
  1042. X  give the column and row. The column letter can be in either lower or
  1043. X  upper case.
  1044. X  .LP
  1045. X! It is possible for one piece to have two or more consequentive moves, hence
  1046. X  the need for the above scheme.
  1047. X  .I Reve
  1048. X  is flexible about white space (except between the '<' and '>' characters).
  1049. X--- 289,295 ----
  1050. X  give the column and row. The column letter can be in either lower or
  1051. X  upper case.
  1052. X  .LP
  1053. X! It is possible for one player to have two or more consequentive moves, hence
  1054. X  the need for the above scheme.
  1055. X  .I Reve
  1056. X  is flexible about white space (except between the '<' and '>' characters).
  1057. X
  1058. X------- reve.edge1 -------
  1059. X*** /tmp/da02170    Wed Nov 28 11:00:40 1990
  1060. X--- reve.edge1    Fri Nov 23 06:44:36 1990
  1061. X***************
  1062. X*** 728,734 ****
  1063. X  edges[ 727] =   -2439 [ -xxxxxoo ]
  1064. X  edges[ 728] =    4036 [ xxxxxxoo ]
  1065. X  edges[ 729] =   -7641 [ oooooo-o ]
  1066. X! edges[ 730] =   -1166 [ -ooooo-o ]
  1067. X  edges[ 731] =      34 [ xooooo-o ]
  1068. X  edges[ 732] =   -2436 [ o-oooo-o ]
  1069. X  edges[ 733] =   -1236 [ --oooo-o ]
  1070. X--- 728,734 ----
  1071. X  edges[ 727] =   -2439 [ -xxxxxoo ]
  1072. X  edges[ 728] =    4036 [ xxxxxxoo ]
  1073. X  edges[ 729] =   -7641 [ oooooo-o ]
  1074. X! edges[ 730] =    4000 [ -ooooo-o ]
  1075. X  edges[ 731] =      34 [ xooooo-o ]
  1076. X  edges[ 732] =   -2436 [ o-oooo-o ]
  1077. X  edges[ 733] =   -1236 [ --oooo-o ]
  1078. X
  1079. X------- reve.edge2 -------
  1080. X*** /tmp/da02173    Wed Nov 28 11:00:42 1990
  1081. X--- reve.edge2    Fri Nov 23 06:44:56 1990
  1082. X***************
  1083. X*** 548,554 ****
  1084. X  edges[2187] =   -7571 [ ooooooo- ]
  1085. X  edges[2188] =     -80 [ -oooooo- ]
  1086. X  edges[2189] =    1304 [ xoooooo- ]
  1087. X! edges[2190] =   -1166 [ o-ooooo- ]
  1088. X  edges[2191] =     100 [ --ooooo- ]
  1089. X  edges[2192] =    1234 [ x-ooooo- ]
  1090. X  edges[2193] =    1434 [ oxooooo- ]
  1091. X--- 548,554 ----
  1092. X  edges[2187] =   -7571 [ ooooooo- ]
  1093. X  edges[2188] =     -80 [ -oooooo- ]
  1094. X  edges[2189] =    1304 [ xoooooo- ]
  1095. X! edges[2190] =    4000 [ o-ooooo- ]
  1096. X  edges[2191] =     100 [ --ooooo- ]
  1097. X  edges[2192] =    1234 [ x-ooooo- ]
  1098. X  edges[2193] =    1434 [ oxooooo- ]
  1099. X
  1100. X------- Imakefile -------
  1101. X*** /tmp/da02176    Wed Nov 28 11:00:43 1990
  1102. X--- Imakefile    Mon Nov 12 16:46:01 1990
  1103. X***************
  1104. X*** 79,86 ****
  1105. X            procs.o rev_eval.o rev_ip.o rev_iycp.o x11.o
  1106. X  
  1107. X  ComplexProgramTarget(reve)
  1108. X! MakeDirectories(install,$(LIBDIR))
  1109. X! InstallNonExec($(ETABLE),$(LIBDIR))
  1110. X  
  1111. X  install:: install.man
  1112. X  
  1113. X--- 79,86 ----
  1114. X            procs.o rev_eval.o rev_ip.o rev_iycp.o x11.o
  1115. X  
  1116. X  ComplexProgramTarget(reve)
  1117. X! MakeDirectories(install,$(LIBDIR)$(PATHSEP)reve)
  1118. X! InstallNonExec($(ETABLE),$(LIBDIR)$(PATHSEP)reve)
  1119. X  
  1120. X  install:: install.man
  1121. X  
  1122. X
  1123. END_OF_FILE
  1124. if test 37905 -ne `wc -c <'patches02c'`; then
  1125.     echo shar: \"'patches02c'\" unpacked with wrong size!
  1126. fi
  1127. # end of 'patches02c'
  1128. fi
  1129. echo shar: End of archive 3 \(of 3\).
  1130. cp /dev/null ark3isdone
  1131. MISSING=""
  1132. for I in 1 2 3 ; do
  1133.     if test ! -f ark${I}isdone ; then
  1134.     MISSING="${MISSING} ${I}"
  1135.     fi
  1136. done
  1137. if test "${MISSING}" = "" ; then
  1138.     echo You have unpacked all 3 archives.
  1139.     rm -f ark[1-9]isdone
  1140. else
  1141.     echo You still need to unpack the following archives:
  1142.     echo "        " ${MISSING}
  1143. fi
  1144. ##  End of shell archive.
  1145. exit 0
  1146.